home *** CD-ROM | disk | FTP | other *** search
/ L' Effet Pommier 3 / L'Effet Pommier - Volume 03.iso / Programmation / Alpha ƒ / Tcl / SystemCode / scheme.tcl < prev    next >
Text File  |  1996-01-21  |  2KB  |  64 lines

  1. #================================================================================
  2. # Scheme mode definition !  oleg@mozart.compsci.com (Oleg Kiselyov)
  3. #================================================================================
  4. #newModeVar Scm elecRBrace {1} 1
  5. newModeVar Scm leftFillColumn {2} 0
  6. newModeVar Scm prefixString {;; } 0 
  7. #newModeVar Scm electricSemi {1} 1
  8. newModeVar Scm wordBreak {[^\(\) \t\r\n]+} 0
  9. #newModeVar Scm elecLBrace {1} 1
  10. newModeVar Scm wordWrap {0} 1
  11. newModeVar Scm funcExpr {^[\(]define.*$} 0
  12. #newModeVar Scm funcExpr {^[^ \t\(\r/].*\(.*\)$} 0
  13. newModeVar Scm wordBreakPreface {[\(\) \t\r\n]} 0
  14. #newModeVar Scm wordBreakPreface {([^a-zA-Z0-9_])} 0
  15. newModeVar Scm optionIsMeta {1} 1
  16. newModeVar Scm electricTab {1} 1
  17. newModeVar Scm autoMark    0    1
  18.  
  19. set scmCommentRegexp    {;.*$}
  20. set scmPreRegexp        {^\#[\t ]*[a-z]*}
  21. set schemeKeyWords        {
  22.     declare define define-macro lambda let let* letrec begin cond case do else
  23.     delay and or if set! #t #f
  24.     not eqv? eq? equal? pair? cons car cdr set-car! set-cdr!
  25.     caar cadr cdar cddr null? list? list length
  26.     append reverse list-ref memq memv member assq assv assoc
  27.     = < > <= >= zero? positive? negative? odd?
  28.     even? + * - / abs
  29.     exact->inexact inexact->exact number->string
  30.     string->number char? 
  31.     string string-length string-ref string-set! string=?
  32.     substring string-append vector?
  33.     make-vector vector vector-length vector-ref vector-set! procedure?
  34.     apply map for-each call-with-current-continuation
  35.     eof-object? read-char peek-char
  36.     }
  37. #regModeKeywords -e {;} -c cyan -k blue Scm $schemeKeyWords -i ")" -i "("  -i "," -i "." -I red
  38. regModeKeywords -e {;} -c cyan -k blue Scm $schemeKeyWords
  39.  
  40. #================================================================================
  41.  
  42. proc dummyScm {} {}
  43.  
  44. proc ScmMarkFile {} {
  45.   set pat1 {^[ \t]*[\(][#a-zA-z]*(define|define-[a-zA-Z]+) +[\(]*([^\(\) \t\r\n]+)}
  46.   set end [maxPos]
  47.   set pos 0
  48.   set l {}
  49.   while {![catch {search -f 1 -r 1 -m 0 -i 1 $pat1 $pos} mtch]} {
  50.     regexp -nocase $pat1 [eval getText $mtch] allofit defunname name
  51.     set start [lindex $mtch 0]
  52.     set end [nextLineStart $start]
  53.     set pos $end
  54.     set inds($name) [lineStart [expr $start - 1]]
  55.   }
  56.  
  57.   if {[info exists inds]} {
  58.     foreach f [lsort -ignore [array names inds]] {
  59.       set next [nextLineStart $inds($f)]
  60.       setNamedMark $f $inds($f) $next $next
  61.     }
  62.   }
  63. }
  64.